/***********************************************************************
 * Module:  Adresa.java
 * Author:  Igor Spremo, Milan Stojkov
 * Purpose: Defines the Class Adresa
 ***********************************************************************/

package model.entity;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

/**
 * 
 * @author Igor Spremo, Milan Stojkov
 *
 */

@SuppressWarnings("serial")
public class Adresa implements Serializable {
	
	protected Integer id;
	protected String ulica;
	protected String broj;
	protected int verzija;

	protected Collection<Poslovnica> poslovnice;
	protected Collection<Saradnik> saradnici;
	protected Collection<Radnik> radnici;

	public Collection<Poslovnica> getPoslovnice() {
		if (poslovnice == null)
			poslovnice = new HashSet<Poslovnica>();
		return poslovnice;
	}

	public Iterator<Poslovnica> getIteratorPoslovnice() {
		if (poslovnice == null)
			poslovnice = new HashSet<Poslovnica>();
		
		return poslovnice.iterator();
	}

	public void setPoslovnice(Collection<Poslovnica> newPoslovnica) {
		removeAllPoslovnice();
		for (Iterator<Poslovnica> iter = newPoslovnica.iterator(); iter.hasNext();)
			addPOSLOVNICA((Poslovnica) iter.next());
	}

	public void addPOSLOVNICA(Poslovnica newPoslovnica) {
		if (newPoslovnica == null)
			return;
		if (this.poslovnice == null)
			this.poslovnice = new HashSet<Poslovnica>();
		if (!this.poslovnice.contains(newPoslovnica))
			this.poslovnice.add(newPoslovnica);
	}

	public void removePoslovnica(Poslovnica oldPoslovnica) {
		if (oldPoslovnica == null)
			return;
		
		if (this.poslovnice != null)
			if (this.poslovnice.contains(oldPoslovnica))
				this.poslovnice.remove(oldPoslovnica);
	
	}

	public void removeAllPoslovnice() {
		if (poslovnice != null)
			poslovnice.clear();
	}

	public Collection<Saradnik> getSaradnici() {
		if (saradnici == null)
			saradnici = new HashSet<Saradnik>();
		return saradnici;
	}

	public Iterator<Saradnik> getIteratorSaradnici() {
		if (saradnici == null)
			saradnici = new HashSet<Saradnik>();
		return saradnici.iterator();
	}

	public void setSaradnici(Collection<Saradnik> newSaradnici) {
		removeAllSaradnici();
		for (Iterator<Saradnik> iter = newSaradnici.iterator(); iter.hasNext();)
			addSaradnik((Saradnik) iter.next());
	}

	public void addSaradnik(Saradnik newSaradnik) {
		if (newSaradnik == null)
			return;
		if (this.saradnici == null)
			this.saradnici = new HashSet<Saradnik>();
		if (!this.saradnici.contains(newSaradnik))
			this.saradnici.add(newSaradnik);
	}

	public void removeSaradnik(Saradnik oldSaradnik) {
		if (oldSaradnik == null)
			return;
		if (this.saradnici != null)
			if (this.saradnici.contains(oldSaradnik))
				this.saradnici.remove(oldSaradnik);
	}

	public void removeAllSaradnici() {
		if (saradnici != null)
			saradnici.clear();
	}

	public Collection<Radnik> getRadnici() {
		if (radnici == null)
			radnici = new HashSet<Radnik>();
		
		return radnici;
	}

	public Iterator<Radnik> getIteratorRadnik() {
		if (radnici == null)
			radnici = new HashSet<Radnik>();
		return radnici.iterator();
	}

	public void setRadnici(Collection<Radnik> newRadnik) {
		removeAllRadnici();
		for (Iterator<Radnik> iter = newRadnik.iterator(); iter.hasNext();)
			addRadnik((Radnik) iter.next());
	}

	public void addRadnik(Radnik newRadnik) {
		if (newRadnik == null)
			return;
		if (this.radnici == null)
			this.radnici = new HashSet<Radnik>();
		if (!this.radnici.contains(newRadnik))
			this.radnici.add(newRadnik);
	}

	public void removeRadnik(Radnik oldRadnik) {
		if (oldRadnik == null)
			return;
		if (this.radnici != null)
			if (this.radnici.contains(oldRadnik))
				this.radnici.remove(oldRadnik);
	}

	public void removeAllRadnici() {
		if (radnici != null)
			radnici.clear();
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getUlica() {
		return ulica;
	}

	public void setUlica(String ulica) {
		this.ulica = ulica;
	}

	public String getBroj() {
		return broj;
	}

	public void setBroj(String broj) {
		this.broj = broj;
	}

	public int getVerzija() {
		return verzija;
	}

	public void setVerzija(int verzija) {
		this.verzija = verzija;
	}

}